import cloudbase from './cloudbase';

/**
 * 测试CloudBase连接
 * @returns {Promise<Boolean>} 连接是否成功
 */
async function testConnection() {
  try {
    // 检查环境配置
    if (!cloudbase.getApp().config.env || cloudbase.getApp().config.env === 'your-env-id') {
      console.warn('云开发环境ID未配置或无效');
      return false;
    }
    
    // 尝试获取登录状态
    const auth = cloudbase.getAuth();
    const loginState = await auth.getLoginState();
    
    // 如果未登录，尝试匿名登录
    if (!loginState) {
      await cloudbase.anonymousLogin();
    }
    
    return true;
  } catch (error) {
    console.error('测试连接失败:', error);
    return false;
  }
}

/**
 * 运行CloudBase连接测试
 */
export const runConnectionTest = async () => {
  console.log('开始CloudBase连接测试...');
  
  try {
    // 测试连接
    const isConnected = await testConnection();
    
    if (isConnected) {
      console.log('✅ CloudBase连接成功！');
      return {
        success: true,
        message: 'CloudBase连接成功'
      };
    } else {
      console.error('❌ CloudBase连接失败');
      return {
        success: false,
        message: 'CloudBase连接失败，请检查网络和环境配置'
      };
    }
  } catch (error) {
    console.error('❌ CloudBase连接测试出错:', error);
    return {
      success: false,
      message: `CloudBase连接测试出错: ${error.message}`,
      error
    };
  }
};

/**
 * 诊断CloudBase连接问题
 */
export const diagnoseConnectionIssues = async () => {
  console.log('开始诊断CloudBase连接问题...');
  const issues = [];
  
  // 检查环境ID配置
  if (!cloudbase.isValidEnvId) {
    issues.push('环境ID未正确配置，请更新src/utils/cloudbase.js中的ENV_ID变量');
  }
  
  // 检查网络连接
  try {
    await fetch('https://tcb-api.tencentcloudapi.com', { 
      method: 'HEAD',
      mode: 'no-cors'
    });
  } catch (error) {
    issues.push('无法连接到腾讯云API，请检查您的网络连接');
  }
  
  // 尝试使用不同的超时设置
  try {
    const tempApp = cloudbase.init({ timeout: 60000 });
    const auth = tempApp.auth();
    await auth.getLoginState();
  } catch (error) {
    issues.push(`即使使用更长的超时时间也无法连接: ${error.message}`);
  }
  
  return {
    hasIssues: issues.length > 0,
    issues,
    recommendations: [
      '确保您已正确配置环境ID',
      '检查网络连接是否稳定',
      '确认您的腾讯云账户和CloudBase服务是否正常',
      '尝试清除浏览器缓存后重试',
      '检查是否有防火墙或代理服务器阻止了连接'
    ]
  };
};

export default {
  runConnectionTest,
  diagnoseConnectionIssues
};